package com.br.extreme.StockService.dao;

import java.util.List;

import javax.persistence.Query;

import com.br.extreme.StockService.domain.Produto;

public class ProdutoDAO extends GenericDAO<Produto, Integer>{
	
	@SuppressWarnings("unchecked")
	public Produto buscar(String barras){
		String sql = "select p from Produto p where p.codigoBarras = :barras";
		Query query = this.entityManager.createQuery(sql, Produto.class);
		query.setParameter("barras", barras);
		List<Produto> resultList = query.getResultList();
		
		if(resultList != null && resultList.size() > 0){
			return resultList.get(0);
		}
		
		return null;
	}

	@Override
	public Produto find(Integer id) {
		return this.entityManager.find(Produto.class, id);
	}

	@Override
	public List<Produto> list(String query) {		
		return this.entityManager.createQuery(query, Produto.class).getResultList();
	}

	@Override
	public List<Produto> listAll() {
		String query = "select p from Produto p";
		return list(query);
	}
	
	public void saveOrUpdate(Produto produto){
		this.entityManager.getTransaction().begin();
		if(produto.getCodigo() == null){
			this.entityManager.persist(produto);
		}else{
			this.entityManager.merge(produto);
		}
		this.entityManager.flush();
		this.entityManager.getTransaction().commit();
	}
}
